Gaming machines may be operated as a stand alone unit, or linked in a network of some type to a group of gaming machines. As technology in the gaming industry progresses, more and more gaming services are being provided to gaming machines via communication networks that link groups of gaming machines to one another and to remote central server computers that provide one or more gaming services. As an example, gaming services that may be provided by the remote computer to a gaming machine via a communication network of some type include player tracking, accounting, cashless award ticketing, lottery, progressive games and bonus games. In addition, gaming machines are evolving into gaming platforms where the gaming services and game play options provided on the gaming machines may be dynamically configured. Thus, the number and type of game services and game play options offered on a particular gaming machine may vary with time.
A gaming entity may operate hundreds, thousands or tens of thousands of gaming machines. Since gaming is allowed in many locations throughout the world, casinos may have games distributed over a wide geographic area. Within casinos, the gaming machines may be connected via one or more dedicated networks. Servers are usually located in a backroom of the casino away from the casino floor.
Networked gaming systems typically communicate with one another using either TCP/IP (Transmission Control Protocol/Internet Protocol) or UDP/IP (User Datagram Protocol/Internet Protocol), which are both well known and widely available protocols.
Several issues however are associated with the use of TCP/IP or UDP/IP. TCP/IP is a byte-stream oriented protocol in which bytes are delivered to a receiver in the order sent by the sender. The byte order is guaranteed regardless of the order in which network packets containing the byte-stream arrive. In addition, TCP/IP is a considered a “reliable” protocol, meaning that if a byte is sent, it is guaranteed to be delivered to the receiver (barring catastrophic network or system failure). Thus if a sender or receiver detects that a part of the byte-stream has not been delivered, the packet or packets containing the missing bytes are retransmitted.
While guaranteed delivery is desirable, the mechanism used in TCP/IP to achieve it has led to the “head of queue” blocking problem. In TCP/IP a queue is typically maintained of bytes waiting to be delivered to the intended receiver application. Due to network or system failures, one or more packets may be dropped, while subsequent packets are delivered. In TCP/IP, delivery halts until the bytes at the head of the queue are retransmitted, which can lead to sizable delays in delivering the remaining bytes.
A further issue with TCP/IP is related to the byte-stream nature of the protocol. Gaming applications and services that communicate with one another often do so using messages having particular messages sizes or message boundaries. Because TCP/IP is a byte-stream oriented protocol, it is up to the gaming applications and services to provide code that organizes the byte stream into messages, thus adding complexity to developing the gaming applications and services.
UDP/IP is able to address the message oriented needs of gaming applications and services because UDP organizes and delivers data in “datagrams”, which may comprise a message. Further, the datagrams, are delivered in the order they arrive, which may or may not be the order they are sent. As a result, UDP/IP does not exhibit the head of queue blocking problem seen in TCP/IP. However, delivery is not guaranteed in UDP/IP, if a packet is dropped, no retransmission is attempted. Thus if a gaming application and service desires to use messages in datagrams to reliably exchange data, the applications and services must supply a mechanism on top of UDP/IP to provide for retransmission of lost messages, thus adding complexity and expense in developing the gaming applications and services.
Additionally, TCP/IP and UDP/IP are not considered fault tolerant. A network or system failure along a network path connecting gaming applications with services can lead to the complete disruption in the delivery of data. In order to achieve fault tolerance, additional layers of code must be provided by the gaming application or service developer, leading to additional cost and complexity.